<?php
/**
 * @Author: laoweizhen <1149243551@qq.com>,
 * @Date: 2021/10/27 18:22,
 * @LastEditTime: 2021/10/27 18:22
 */

namespace Lwz\LaravelExtend\MQ\Interfaces;


use Lwz\LaravelExtend\MQ\Enum\MQStatusLogEnum;
use Lwz\LaravelExtend\MQ\Models\MQErrorLog;

interface MQErrorLogServiceInterface
{
    /**
     * 添加
     * @param string $mqUuid mq唯一标识
     * @param array|string $payload 负载，消息体
     * @param array $mqConfig mq配置
     * @param string $errMsg 错误信息
     * @param int $retryNum 重试次数
     * @param int $retryStatus 重试状态
     * @return mixed
     */
    public function addData(string $mqUuid, $payload, array $mqConfig, string $errMsg, int $retryNum = 0, int $retryStatus = MQStatusLogEnum::ERS_WAIT): MQErrorLog;

    /**
     * 获取详情
     * @param string $mqUuid
     * @return MQErrorLog|null
     * @author lwz
     */
    public function getDetailByMquuid(string $mqUuid): ?MQErrorLog;

    /**
     * 通过 uuid 更新消息
     * @param string $mqUuid mq唯一标识（多个传数组）
     * @param array $data 更新的数据
     * @return mixed
     * @auth lwz
     */
    public function updateByMQUuid(string $mqUuid, array $data);

    /**
     * 通过 uuid 删除消息
     * @param string|array $mqUuid mq唯一标识（多个传数组）
     * @return mixed
     * @auth lwz
     */
    public function deleteByMQUuid($mqUuid);
}
